package com.heima.file.config;

import com.heima.file.service.FileStorageService;
import io.minio.MinioClient;
import lombok.Data;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;


@Data
@Configuration//表明这个类是一个配置类。Spring会识别这个类，并且可以在其中定义Bean
//Spring Boot会自动将配置文件中的属性绑定到MinIOConfigProperties这个类的字段上
@EnableConfigurationProperties({MinIOConfigProperties.class})
//表明只有当类路径中存在FileStorageService类时，这个配置类才会被加载
@ConditionalOnClass(FileStorageService.class)
public class MinIOConfig {

    @Autowired
    private MinIOConfigProperties minIOConfigProperties;

    //buildMinioClient方法返回的MinioClient对象会被注册为Spring的一个Bean，可以在其他地方通过依赖注入的方式获取使用
    @Bean
    public MinioClient buildMinioClient() {
        return MinioClient
                .builder()//创建MinioClientBuilder对象
                //设置MinIO的访问凭证，即AccessKey和SecretKey（账号和密码）
                .credentials(minIOConfigProperties.getAccessKey(), minIOConfigProperties.getSecretKey())
                .endpoint(minIOConfigProperties.getEndpoint())//设置MinIO的服务地址
                .build();//创建MinioClient对象并返回
    }
}